from abc import ABC, abstractmethod
from enum import Enum
from ..pizza.abstract import *

__all__ = ["PizzaStore"]

class PizzaStore(ABC):
    class PizzaType(Enum):
        CHEESE = "cheese",
        VEGGIE = "veggie",
        CLAM = "clam",
        PEPPERONI = "pepperoni"

    def order_pizza(self, pizza_type: PizzaType) -> Pizza:
        pizza = self.create_pizza(pizza_type)
        pizza.prepare()
        pizza.bake()
        pizza.cut()
        pizza.box()
        return pizza

    @abstractmethod
    def create_pizza(self, pizza_type: PizzaType) -> Pizza:
        ...
